iT邦幫忙

2024 iThome 鐵人賽

DAY 12
1
Kubernetes

Kubernetes圖解筆記系列 第 12

Day-12 kubectl:常見應用

  • 分享至 

  • xImage
  •  

很簡單的,真的!


前篇介紹了 kubectl 的特性和使用場景,接下來就實際用用看吧!
先從取得資訊開始:

kubectl get

取得資源列表
基本句式:

kubectl get <資源類別>
# 範例
kubectl get namespace
kubectl get nodes
kubectl get pods

執行結果:
https://ithelp.ithome.com.tw/upload/images/20240913/20168437JS52kVy1zB.png

get 指令可以取得資源的基本資訊,主要包含名稱、數量、狀態、版本等訊息,依查詢的資源有所不同。如果要取得比基本資訊更詳細的資料,可以加上 -o wide 修飾。

執行結果:
https://ithelp.ithome.com.tw/upload/images/20240913/20168437Civa2L0MG2.png

懶得從完整資訊找的時候,這個指令超好用的

kubectl describe

取得資源完整訊息
基本句式:

kubectl describe <資源類別> <資源名稱>
# 範例
kubectl describe pod demo-pod
kubectl describe node minikube

執行結果:
https://ithelp.ithome.com.tw/upload/images/20240913/20168437BSLmy5W85Q.png
https://ithelp.ithome.com.tw/upload/images/20240913/201684370fo17H9YXH.png
(其實後面還有,但截不下了...)

內容會包含資源的完整資訊。
是在除錯和確認資源狀態的時候非常實用的指令。
例如:在 pod 部署失敗的時候,就可以先從 describe 末端的 Events 確認執行紀錄,若找不出線索再去調閱詳細的 Log。

-o

輸出指令(output),可以產出 yaml 或 json 格式的文檔
基本句式:查詢語句加上 -o <輸出格式>

https://ithelp.ithome.com.tw/upload/images/20240913/201684375LYy2PYYja.png

要輸出 json 格式當然也沒問題!
https://ithelp.ithome.com.tw/upload/images/20240913/201684373X71iJNgeM.png

相關配置內容之後的文章會陸續介紹,太多了一篇根本講不完...
呈現的內容與 describe大同小異,但因為是設定檔,不會包含資源狀態和執行訊息等資訊喔!

run

執行,前面做 deploy pod 的時候有使用過,這邊就不多贅述。
但有個好用的指令搭配可以記一下:

# 試運行
--dry-run=client

執行結果:
https://ithelp.ithome.com.tw/upload/images/20240913/20168437JCPCfqApli.png
get pods 可以看出加上了 --dry-run 的指令並沒有真的執行建立 pod。
光這樣看,可能會覺得啊不就是試 run,看看有沒有報錯而已哪有多實用?

這個指令沒什麼用?

NoNoNo,搭配前一個 -o 指令可是有奇效的! (¯︶¯)

如果覺得 yaml 檔跟格式太難記,可以試試 --dry-run + -o yaml 的組合技!
https://ithelp.ithome.com.tw/upload/images/20240913/20168437XlGVmEGuvS.png

這樣寫 yaml 是不是就容易多了呢 🧡🧡🧡
再加上匯出指令,撰寫 yaml 的捷徑就完成了

kubectl run demo-pod2 --image=nginx --dry-run=client -o yaml > demo-pod.yaml

https://ithelp.ithome.com.tw/upload/images/20240913/20168437kXQakMxoky.png

create、delete、apply

有了 yaml 檔案,正好試試 -f 指令
-f:透過 file 完成操作

kubectl create -f <配置 yaml 檔>

執行結果:
https://ithelp.ithome.com.tw/upload/images/20240913/20168437wZRcBNAJs4.png

再來測試看看 apply... 欸? Warning?
https://ithelp.ithome.com.tw/upload/images/20240913/20168437s9K9pAOqb2.png
這是因為 yaml 檔中設定的 demo-pod2 已經在剛才的 create 建立完成了,所以會顯示 warning:pod/demo-pod2 configured。

那如果我再下 create 指令,也會出現警告訊息嗎?

不會喔!

會直接報錯 (^。^)
https://ithelp.ithome.com.tw/upload/images/20240913/20168437bDM7jQ8EPK.png

為什麼會有這樣的不同呢?

還記得前篇提到的 指令式宣告式 嗎?這就是差異所在。
create 的執行是直接操作 Kubernetes 去建立一個新的 pod,而 apply 是讓 Kubernetes 在資源中存在與設定相符的 pod 資源,宣告式是確保最後的結果有符合設定,因此對於已經存在的資源, apply 指令只會提醒該資源已經被設定過,而 create 就會直接報出執行失敗的訊息囉!

最後試試執行刪除
基本句式:

kubectl delete <資源類別> <資源名稱>

執行結果:
https://ithelp.ithome.com.tw/upload/images/20240913/20168437eGMTulsZE4.png

完成刪除後再執行 apply 就可以順利建立資源囉~
https://ithelp.ithome.com.tw/upload/images/20240913/20168437za5hBx8Vex.png


小結

以上就是幾個操作 k8s 一定會用上的指令!
基本語法加上 demo ,到今天已經完成對 Kubernetes 的基本操作啦~

啊,對了。
測試完記得關掉 minikube 。

minikube stop      

上一篇有留言超級開心的,但新手訓練期間還不能進行回應只好在這裡感謝了(⁎⁍̴̛ᴗ⁍̴̛⁎)


上一篇
Day-11 kubectl:基本介紹
下一篇
Day-13 Service
系列文
Kubernetes圖解筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言